package com.appspot.didit.client.gin;

import com.appspot.didit.client.MainPresenter;
import com.appspot.didit.client.MainPresenterImpl;
import com.appspot.didit.client.MainView;
import com.appspot.didit.client.statistic.StatisticPresenter;
import com.appspot.didit.client.statistic.StatisticPresenterImpl;
import com.appspot.didit.client.statistic.StatisticView;
import com.appspot.didit.client.tag.TagManagePresenter;
import com.appspot.didit.client.tag.TagManagePresenterImpl;
import com.appspot.didit.client.tag.TagManageView;
import com.appspot.didit.client.tag.TagSharePresenter;
import com.appspot.didit.client.tag.TagSharePresenterImpl;
import com.appspot.didit.client.tag.TagShareView;
import com.appspot.didit.client.user.AuthenticationPresenter;
import com.appspot.didit.client.user.AuthenticationPresenterImpl;
import com.appspot.didit.client.user.AuthenticationView;
import com.appspot.didit.client.user.LoginPresenter;
import com.appspot.didit.client.user.LoginPresenterImpl;
import com.appspot.didit.client.user.LoginView;
import com.appspot.didit.client.user.RegisterPresenter;
import com.appspot.didit.client.user.RegisterPresenterImpl;
import com.appspot.didit.client.user.RegisterView;
import com.appspot.didit.client.workitem.CreateWorkitemPresenter;
import com.appspot.didit.client.workitem.CreateWorkitemPresenterImpl;
import com.appspot.didit.client.workitem.CreateWorkitemView;
import com.appspot.didit.client.workitem.WorkitemExportPresenter;
import com.appspot.didit.client.workitem.WorkitemExportPresenterImpl;
import com.appspot.didit.client.workitem.WorkitemExportView;
import com.appspot.didit.client.workitem.WorkitemListPresenter;
import com.appspot.didit.client.workitem.WorkitemListPresenterImpl;
import com.appspot.didit.client.workitem.WorkitemListView;
import com.appspot.didit.client.workitem.WorkitemManagePresenter;
import com.appspot.didit.client.workitem.WorkitemManagePresenterImpl;
import com.appspot.didit.client.workitem.WorkitemManageView;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.inject.client.AbstractGinModule;
import com.google.inject.Singleton;

public class AppModule extends AbstractGinModule {

	@Override
	protected void configure() {

		bind(HandlerManager.class).toProvider(HandlerManagerProvider.class).in(
				Singleton.class);

		bind(LoginPresenter.class).to(LoginPresenterImpl.class);
		bind(LoginPresenter.View.class).to(LoginView.class);

		bind(RegisterPresenter.class).to(RegisterPresenterImpl.class);
		bind(RegisterPresenter.View.class).to(RegisterView.class);

		bind(AuthenticationPresenter.class).to(AuthenticationPresenterImpl.class);
		bind(AuthenticationPresenter.View.class).to(AuthenticationView.class);
		
		bind(CreateWorkitemPresenter.class).to(CreateWorkitemPresenterImpl.class);
		bind(CreateWorkitemPresenter.View.class).to(CreateWorkitemView.class);
		
		bind(WorkitemListPresenter.class).to(WorkitemListPresenterImpl.class);
		bind(WorkitemListPresenter.View.class).to(WorkitemListView.class);
	
		bind(WorkitemManagePresenter.class).to(WorkitemManagePresenterImpl.class);
		bind(WorkitemManagePresenter.View.class).to(WorkitemManageView.class);
		
		bind(WorkitemExportPresenter.class).to(WorkitemExportPresenterImpl.class);
		bind(WorkitemExportPresenter.View.class).to(WorkitemExportView.class);
		
		bind(TagManagePresenter.class).to(TagManagePresenterImpl.class);
		bind(TagManagePresenter.View.class).to(TagManageView.class);
		
		bind(TagSharePresenter.class).to(TagSharePresenterImpl.class);
		bind(TagSharePresenter.View.class).to(TagShareView.class);
		
		bind(StatisticPresenter.class).to(StatisticPresenterImpl.class);
		bind(StatisticPresenter.View.class).to(StatisticView.class);
	
		bind(MainPresenter.class).to(MainPresenterImpl.class);
		bind(MainPresenter.View.class).to(MainView.class);
		
	}

}
